<?php

/**
 * Created by PhpStorm.
 * User: admin
 * Date: 2018/5/17
 * Time: 17:10
 * description:练习demo practice
 */
class splQueueDemo
{
}

$queue = new \SplQueue();
/**
 * 可见队列和双链表的区别就是IteratorMode改变了而已，栈的IteratorMode只能为：
 * （1）SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_KEEP  （默认值,迭代后数据保存）
 * （2）SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_DELETE （迭代后数据删除）
 */
/**
 * 队列这种数据结构更简单，就像我们生活中排队一样，它的特性是先进先出(LIRO   FIFO)。
 * PHP SPL中SplQueue类就是实现队列操作，和栈一样，它也可以继承双链表(SplDoublyLinkedList)轻松实现。
 */
$queue->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_DELETE);
//$queue->push('a');
//$queue->push('b');
//$queue->push('c');
//$queue->push('d');
$queue->enqueue(1);
$queue->enqueue(2);
$queue->enqueue(3);
$queue->enqueue(4);
//print_r($queue->shift());
print_r($queue->dequeue());
echo gettype($queue);
foreach ($queue as $k => $v) {
    echo $v . PHP_EOL;
}

// 结果 ：1  object  2 3 4